concat 関数の例
CONCAT() 関数は、CONCATENATE スクリプトのキーワードと、混同してはいけません。
最もシンプルな形では、値/ワード/選択をひとつの文字列に結合させるのに、Concat() が使用されます。しかし、異なる問題を解決するのに役立つ多数の方法で、活用することが可能です。すべての例は、下記のテーブルに基づいています:
Table | MyColumn | Date | Value |
---|---|---|---|
Data | JKL | 01/01/2012 | 11 |
Data1 | WVX | 01/02/2012 | 13 |
Data | GHI | 01/03/2012 | 13 |
Data | ABC | 01/04/2012 | 15 |
Data1 | STU | 01/05/2012 | 18 |
Data1 | PQR | 01/06/2012 | 10 |
Data1 | MNO | 01/07/2012 | 25 |
Data | DEF | 01/08/2012 | 11 |
シンプルな文字列連結
これまでに説明した通り、concat 関数は、リストされた値を連結することができます。これら値はハード・コード化されたり、選択/データによって駆動されます。
=CONCAT(MyColumn,',')
=CONCAT(DISTINCT MyColumn,',')
このシンプルなconcat ステートメントで、列MyColumn の絞込値をすべて連結します。DISTINCT キーワードを追加した方がよい場合があります。これにより、各値は、文字列で 1 回だけ表示されるようになります。
ABC,DEF,GHI,JKL,MNO,PQR,STU,VWX
シンプルなconcatを使用した場合、選択した列ごとに、文字列の値を順番に並べる関数に、sort weightを追加する選択肢が増えます。下記の例では、値をソートするために、データ列が追加されています。
=CONCAT(MyColumn, ',', Date)
結果:JKL,VWX,GHI,ABC,STU,PQR,MNO,DEF
数式/Set ステートメント内の Concat()
Set 分析の数式に複数の動的な値を渡す
Set ステートメントに動的な値の選択を渡したい場合があります。そうするためには、CONCAT() 関数が 'JKL' や 'VWX' などを返すように、文字列にシングル クォートを追加する必要があります。しかし、シングル クォートそのままで、使用することはできません。なぜなら、Set 数式が評価されているときではなく、Concat が評価されている時に、シングル クォートが解釈されるからです。よって代わりに、下記のようにChr() 関数を使用します:
=CONCAT(Chr(39)&MyColumn&Chr(39),',')
そして、このconcat ステートメントを数式内に渡すことができます:
=Sum({<MyColumn={$(=CONCAT(Chr(39)&MyColumn&Chr(39),','))}>} Value)
このテクニックはほとんどの場合、データ アイランドが存在するときに使用されます。データ アイランドのテーブルがデータ モデルに連結していないので、データ モデルに何の影響を及ぼさない数式に、値が渡されます。
スクリプト内の Concat()
また、Concat は、他の集計関数と同じように、複数の行を単一の列の値にコンバートするために、スクリプト内で使用されます。
以前、使用されていたソース データを把握している場合、スクリプト側CONCAT の結果は、以下の通りです:
以下は、このスクリプト関数の結果です:
Table | CombinedData |
---|---|
Data | ABC,DEF,GHI,JKL |
Data1 | MNO,PQR,STU,WVX |
Rank() を使用して、Concat() に影響を及ぼす
concat() と併せて、その他の関数を活用し始めると、うまく結果を達成できるようになります。この例では、(値に基づき)上位3名のパフォーマーを把握し、その結果を連結させるために、Rank() が使用されています。
=CONCAT(IF(aggr(Rank(sum(Value)),MyColumn)<=3,MyColumn),',')
結果:ABC,MNO,STU